#ifndef TIMER_H
#define TIMER_H

#ifdef __cplusplus
extern "C" {
#endif

#include <sys/time.h>

/*
 * 获得错误的信息
 */
char *timer_strerror(int err);

/*
 * 初始化定时器模块
 * @param millisec  无定时器超时情况下的监听间隔
 * @param max_timers 最大监视定时器数
 * @return 0成功 TIMER_ERR_*
 */
int timer_mod_init(int millisec, int max_timers);


/*
 * 超时回调函数签名
 * @param int 超时次数
 * @param void* 回调参数
 */
typedef int (*timer_callback)(int /*timeout_times*/, void * /* param */);


/* 
 * 开始一个定时器 *
 * @param timer_id 成功返回timer_id
 * @param repeat 是否重复 0表示只运行一次，超时后不再运行
 * @param interval 超时间隔
 * @param callback 超时回调
 * @param cb_param 回调函数的参数
 * @return 0成功 TIMER_ERR_*
 */
int timer_start(int *timer_id, int repeat, struct timeval interval, timer_callback cb, void *cb_param);


/*
 * 停止定时器
 * @param timer_id 待停止的timer_id
 * @return 0成功 TIMER_ERR_*
 */
int timer_stop(int timer_id);


/*
 * 销毁定时器模块
 * @return 0成功 TIMER_ERR_*
 */
int timer_mod_destroy();

#ifdef __cplusplus
}
#endif

#endif
